package com.cskaoyan.javase.oop1._12anonymous;

/**
 * 匿名（anonymous）或者佚名，指的是没有名字或者名字缺失。
 * 在Java当中，匿名对象指的就是没有名字的对象。
 * 或者，说的更清楚一点，就是：
 * 在创建对象时，就没有引用指向的对象，就是匿名对象！
 *
 * 匿名对象的语法很简单，只需要在方法等位置中写下列语法：
 * new 类名();
 * 以上语法就得到了一个匿名对象，从实质上看：
 * 该对象没有栈上的引用指向，没有所谓的"对象名"，是一个匿名对象。
 *
 * 匿名对象如果不在定义时,使用它,那么在下面的代码中就不可能再次使用它了
 * 这就是匿名对象
 *
 * 匿名对象的用途:
 *      1.为了简单方便,可以在匿名对象后面直接"."调用方法,访问属性等等(不多见)
 *      2.配合方法调用使用:
 *          a.使用匿名对象作为方法的实参传入方法.
 *          b.使用匿名对象作为方法的返回值
 *
 * @since 14:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 引用指向对象
        Student s = new Student();

        // 不用引用指向对象,创建匿名对象
        System.out.println(new Student().age);
        new Student().test();

        System.out.println("------------------");
        // 常规的将引用传递给方法
        method(s);
        // 使用匿名对象
        method(new Student());

        Student s2 = method();
        s2.test();
    }

    public static void method(Student s) {
        s.test();
    }

    public static Student method(){
        /*Student s = new Student();
        return s;*/
        return new Student();
    }
}

class Student {
    int age = 10;

    public void test() {
        System.out.println("test");
    }
}